package homework.chapter11;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Random;
import java.util.stream.Collectors;

public class Work01 {
    public static void main(String[] args) {
//        （1）创建一个Collection集合primeNumbers（暂时new ArrayList())
        Collection<Integer> printNumbers = new ArrayList<>();
//        （2）添加100以内的质数到primeNumbers集合中质数是大于1的自然数，并且只能被1和它本身整除。
        for (int i = 2; i < 100; i++) {
            if (isPrime(i)) {
                printNumbers.add(i);
            }
        }
//      （3）查看100以内的质数个数有几个
        System.out.println("100以内的质数个数有"+printNumbers.size()+"个");
//        （4）使用foreach遍历primeNumbers集合中的所有质数。
        System.out.println("它们分别是：");
        for (Integer printNumber : printNumbers) {
            System.out.print(" " + printNumber+" ");
        }
        System.out.println();
//        （5）使用Iterator迭代器删除个位数是3的质数。
        Iterator<Integer> iterator = printNumbers.iterator();
        while (iterator.hasNext()) {
            int number = iterator.next();
            if (number % 10 == 3) {
                iterator.remove();
            }
        }
//        （6）判断primeNumbers集合中是否有11，如果有请使用Collection集合的remove方法删除11
        if (printNumbers.contains(11)) {
            printNumbers.remove(11);
        }
//        （7）使用Collection集合的removeIf方法删除个位数是7的质数。
        printNumbers.removeIf(number -> number%10==7);
//        （8）再次使用Iterator遍历primeNumbers集合中剩下的质数。
        System.out.println("剩下的质数它们分别是：");
        for (Integer printNumber : printNumbers) {
            System.out.print(" " + printNumber+" ");
        }
        System.out.println();

//        （9）创建另一个Collection集合randNumbers
        Collection<Integer> randNumbers = new ArrayList<>();
//        （10）添加10个100以内的随机整数到randNumbers集合中
        Random random = new Random();
        for (int i = 0; i <10; i++) {
            randNumbers.add(random.nextInt(100));
        }

//        （11）使用foreach遍历randNumbers集合中的随机数。
        System.out.println("生成的10个随机数分别是：");
        for (Integer randNumber : randNumbers) {
            System.out.print(" " + randNumber + " ");
        }
        System.out.println();

//        （12）求它们的交集
        Collection<Integer> intersection = printNumbers.stream().filter(randNumbers::contains).collect(Collectors.toList());
        System.out.println("printNumbers和randomNumbers的交集为：");
        for (Integer integer : intersection) {
            System.out.print(" " + integer + " ");
        }
        System.out.println();
    }

    private static boolean isPrime(int num) {
        if (num <= 1) {
            return false;
        }
        for (int i = 2; i <= Math.sqrt(num); i++) {
            if (num % i == 0) {
                return false;
            }
        }
        return true;
    }
}

